The present invention relates generally to sharing and accessing data, and more particularly to providing forecasts using data in an on-demand database and/or application service.
Management teams of organizations require reporting on many facets of their business in order to make informed decisions (e.g. Manager of a sales team requires opportunity numbers to forecast revenue). Reporting systems provide capabilities for a user to submit a request to create a report. As an example, a manager submits a request to generate a report for forecast numbers of his sales team. The system then creates a report based on the supplied parameters and requested output data. This is known as a normalized model. Such systems have the inherent characteristic of a user having to wait while the report is being generated, sometimes for substantial periods of time. The wait period problem can be further aggravated in multi-tenant database systems (MTS) where a large number of users access the database at any given time, sometimes applying complex logic with high granularity dimension data (e.g. totals for a large team of sales personnel) and user overrides (e.g. manager estimates for sales data).
Other systems might provide reporting type of data such as forecast numbers in real-time. A truly real-time implementation requires that the aggregation of forecast rollups occur in a single database transaction upon changes to the source data (e.g. a sales person changes opportunity data). Although this may alleviate the wait period problem of the normalized model, it can introduce a system resource problem, particularly locking contention in databases. Other users of the system may have to wait for system resources to free up while numbers are aggregated and updated for forecasts in a single transaction. The resource contention problem can be further aggravated in a MTS system where large number of users access the database system at any given time and are contending for system resources simultaneously.
It is therefore desirable to provide asynchronous systems and methods for reporting type of data (e.g. forecast rollups) where the forecast numbers are updated neither on demand as in a normalized model nor in a single transaction with every source data update as in a truly real-time model. Such a system facilitates more scalable, powerful and flexible systems.